Skip to content

Conversation

@MananTank
Copy link
Member

@MananTank MananTank commented Dec 18, 2025


PR-Codex overview

This PR focuses on UI improvements for the Payment Details component and related widgets in the thirdweb project. Enhancements include layout adjustments, styling updates, and the addition of new properties to components for better visual presentation and functionality.

Detailed summary

  • Updated padding and border radius in TokenBalanceRow and PaymentOverview.
  • Modified WalletRow to use a Container for improved layout and styling.
  • Changed border style from solid to dashed in PaymentOverview.
  • Enhanced StepConnectorArrow with new margin and padding styles.
  • Updated OutlineWalletIcon to accept size, color, and style props.
  • Adjusted cryptoPaymentMethod and ethCryptoPaymentMethod to include hasEnoughBalance and prices properties.
  • Improved layout and styling in PaymentDetails, including gap adjustments and button styling changes.

✨ Ask PR-Codex anything about this PR by commenting with /codex {your question}

Summary by CodeRabbit

  • Bug Fixes

    • Improved bridge payment details UI with enhanced spacing, borders, radii, and styling tweaks
    • Refined typography and color usage across payment interface components
  • UI Enhancements

    • Updated disconnected wallet row to show a bordered, rounded placeholder around the wallet icon
    • Aligned icon/button sizing and spacing across components; confirm button visual updated
  • Docs / Examples

    • Storybook examples updated to use explicit payment method data
  • Other

    • Icon component now accepts a style prop and better sizing options

✏️ Tip: You can customize this high-level summary in your review settings.

@vercel
Copy link

vercel bot commented Dec 18, 2025

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Review Updated (UTC)
docs-v2 Ready Ready Preview, Comment Dec 19, 2025 1:09pm
nebula Ready Ready Preview, Comment Dec 19, 2025 1:09pm
thirdweb_playground Ready Ready Preview, Comment Dec 19, 2025 1:09pm
thirdweb-www Ready Ready Preview, Comment Dec 19, 2025 1:09pm
wallet-ui Ready Ready Preview, Comment Dec 19, 2025 1:09pm

@linear
Copy link

linear bot commented Dec 18, 2025

@changeset-bot
Copy link

changeset-bot bot commented Dec 18, 2025

🦋 Changeset detected

Latest commit: 56a1c0a

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 4 packages
Name Type
thirdweb Patch
@thirdweb-dev/nebula Patch
@thirdweb-dev/wagmi-adapter Patch
wagmi-inapp Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Dec 18, 2025

Walkthrough

Visual and layout updates to Bridge payment-details and related ConnectWallet UI components, plus a changeset and test fixture restructuring for PaymentMethod objects; no public API behavior changes reported.

Changes

Cohort / File(s) Summary
Bridge — Payment details & overview
packages/thirdweb/src/react/web/ui/Bridge/common/TokenBalanceRow.tsx, packages/thirdweb/src/react/web/ui/Bridge/payment-details/PaymentDetails.tsx, packages/thirdweb/src/react/web/ui/Bridge/payment-details/PaymentOverview.tsx
Presentational updates only: consolidated design-system imports; increased spacing and padding (sm → md/md+); larger radii (lg/md → xl/full); added/adjusted 1px borders and background tokens (modalBg); updated icon sizing to iconSize values; adjusted text weights and color tokens; confirm button variant changed from accentprimary. No behavioral changes.
ConnectWallet — icons & small components
packages/thirdweb/src/react/web/ui/ConnectWallet/icons/OutlineWalletIcon.tsx, packages/thirdweb/src/react/web/ui/ConnectWallet/screens/Buy/swap/StepConnector.tsx, packages/thirdweb/src/react/web/ui/ConnectWallet/screens/Buy/swap/WalletRow.tsx
API/signature change for OutlineWalletIcon: removed IconFC type alias and switched to explicit props object adding optional style; SVG now forwards style. StepConnector and WalletRow replace hard-coded sizes/values with iconSize and radius tokens; WalletRow renders a bordered full-radius placeholder container for disconnected state.
Stories / test fixtures
packages/thirdweb/src/stories/Bridge/PaymentDetails.stories.tsx
Replaced JSON-parsed fixtures with direct PaymentMethod object literals; added action and hasEnoughBalance fields; moved pricing to originToken.prices keyed by USD (replacing priceUsd).
Changeset / release metadata
.changeset/yummy-squids-rush.md
Added a changeset entry documenting a patch release for Payment Details UI improvements.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

  • Pay attention to OutlineWalletIcon.tsx: ensure the explicit props shape and forwarded style are compatible with all consumers and TypeScript expectations.
  • Review PaymentDetails.stories.tsx: confirm test fixtures match the runtime PaymentMethod type (especially originToken.prices vs prior priceUsd) and update any dependent tests or story usages.
  • Verify design-token substitutions (spacing, radius, iconSize) did not unintentionally alter layout in edge cases (responsive or small-screen).

Pre-merge checks and finishing touches

❌ Failed checks (1 warning, 1 inconclusive)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
Linked Issues check ❓ Inconclusive The linked issue MNY-341 provides only a title with no detailed coding requirements or acceptance criteria to validate against the implementation. Verify that the UI improvements in this PR match the requirements from the MNY-341 issue by reviewing the full issue details in your issue tracking system.
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly refers to Payment Details UI improvements and matches the main objective of the changeset, which focuses on styling and layout updates across Payment Details and related bridge widget components.
Description check ✅ Passed The description includes a comprehensive PR-Codex overview detailing all changes, but lacks specific testing instructions; the template's 'How to test' section remains empty and uncommented.
Out of Scope Changes check ✅ Passed All changes are consistently focused on UI styling and component prop updates for Payment Details and bridge widgets; no unrelated functional logic or refactoring detected.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch mny-341

Warning

Review ran into problems

🔥 Problems

Errors were encountered while retrieving linked issues.

Errors (1)
  • TEAM-0000: Entity not found: Issue - Could not find referenced Issue.

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions github-actions bot added packages SDK Involves changes to the thirdweb SDK labels Dec 18, 2025
Copy link
Member Author


How to use the Graphite Merge Queue

Add either label to this PR to merge it via the merge queue:

  • merge-queue - adds this PR to the back of the merge queue
  • hotfix - for urgent hot fixes, skip the queue and merge this PR next

You must have a Graphite account in order to use the merge queue. Sign up using this link.

An organization admin has enabled the Graphite Merge Queue in this repository.

Please do not merge from GitHub as this will restart CI on PRs being processed by the merge queue.

This stack of pull requests is managed by Graphite. Learn more about stacking.

@github-actions
Copy link
Contributor

github-actions bot commented Dec 18, 2025

size-limit report 📦

Path Size
@thirdweb-dev/nexus (esm) 105.66 KB (0%)
@thirdweb-dev/nexus (cjs) 319.47 KB (0%)

@codecov
Copy link

codecov bot commented Dec 18, 2025

Codecov Report

❌ Patch coverage is 8.77193% with 52 lines in your changes missing coverage. Please review.
✅ Project coverage is 54.50%. Comparing base (6e87b92) to head (56a1c0a).
⚠️ Report is 1 commits behind head on main.

Files with missing lines Patch % Lines
...eb/ui/ConnectWallet/screens/Buy/swap/WalletRow.tsx 0.00% 20 Missing ⚠️
...t/web/ui/Bridge/payment-details/PaymentDetails.tsx 5.26% 18 Missing ⚠️
.../web/ui/Bridge/payment-details/PaymentOverview.tsx 0.00% 7 Missing ⚠️
...i/ConnectWallet/screens/Buy/swap/StepConnector.tsx 14.28% 6 Missing ⚠️
...src/react/web/ui/Bridge/common/TokenBalanceRow.tsx 0.00% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #8576      +/-   ##
==========================================
+ Coverage   54.47%   54.50%   +0.03%     
==========================================
  Files         922      922              
  Lines       61361    61386      +25     
  Branches     4149     4171      +22     
==========================================
+ Hits        33425    33459      +34     
+ Misses      27835    27826       -9     
  Partials      101      101              
Flag Coverage Δ
packages 54.50% <8.77%> (+0.03%) ⬆️
Files with missing lines Coverage Δ
...t/web/ui/ConnectWallet/icons/OutlineWalletIcon.tsx 100.00% <100.00%> (ø)
...src/react/web/ui/Bridge/common/TokenBalanceRow.tsx 11.11% <0.00%> (ø)
...i/ConnectWallet/screens/Buy/swap/StepConnector.tsx 16.12% <14.28%> (+3.22%) ⬆️
.../web/ui/Bridge/payment-details/PaymentOverview.tsx 5.07% <0.00%> (ø)
...t/web/ui/Bridge/payment-details/PaymentDetails.tsx 3.70% <5.26%> (-0.05%) ⬇️
...eb/ui/ConnectWallet/screens/Buy/swap/WalletRow.tsx 15.29% <0.00%> (-4.41%) ⬇️

... and 9 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@graphite-app
Copy link
Contributor

graphite-app bot commented Dec 19, 2025

Merge activity

<!--

## title your PR with this format: "[SDK/Dashboard/Portal] Feature/Fix: Concise title for the changes"

If you did not copy the branch name from Linear, paste the issue tag here (format is TEAM-0000):

## Notes for the reviewer

Anything important to call out? Be sure to also clarify these in your comments.

## How to test

Unit tests, playground, etc.

-->

<!-- start pr-codex -->

---

## PR-Codex overview
This PR focuses on improving the Payment Details UI for bridge widget components in the `thirdweb` package, enhancing layout, styling, and functionality.

### Detailed summary
- Adjusted `padding` in `TokenBalanceRow.tsx`.
- Replaced `OutlineWalletIcon` with a styled `Container` in `WalletRow.tsx`.
- Updated `borderRadius` and `borderBottom` styles in `PaymentOverview.tsx`.
- Enhanced `StepConnectorArrow` styles and added `iconSize` for `ChevronDownIcon`.
- Modified `OutlineWalletIcon` definition to accept `size`, `color`, and `style` props.
- Refactored `cryptoPaymentMethod` and `ethCryptoPaymentMethod` structures for clarity.
- Updated `PaymentDetails.tsx` styles, including `gap`, `borderRadius`, and button styles.

> ✨ Ask PR-Codex anything about this PR by commenting with `/codex {your question}`

<!-- end pr-codex -->

<!-- This is an auto-generated comment: release notes by coderabbit.ai -->

## Summary by CodeRabbit

* **Bug Fixes**
  * Improved bridge payment details UI with enhanced spacing, borders, and styling
  * Updated wallet row display with better visual presentation when disconnected
  * Refined typography and color usage across payment interface components
  * Enhanced border radius and padding consistency throughout bridge widget

<sub>✏️ Tip: You can customize this high-level summary in your review settings.</sub>

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

📜 Review details

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Disabled knowledge base sources:

  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between 9e13bd0 and 56a1c0a.

📒 Files selected for processing (8)
  • .changeset/yummy-squids-rush.md (1 hunks)
  • packages/thirdweb/src/react/web/ui/Bridge/common/TokenBalanceRow.tsx (1 hunks)
  • packages/thirdweb/src/react/web/ui/Bridge/payment-details/PaymentDetails.tsx (5 hunks)
  • packages/thirdweb/src/react/web/ui/Bridge/payment-details/PaymentOverview.tsx (3 hunks)
  • packages/thirdweb/src/react/web/ui/ConnectWallet/icons/OutlineWalletIcon.tsx (2 hunks)
  • packages/thirdweb/src/react/web/ui/ConnectWallet/screens/Buy/swap/StepConnector.tsx (2 hunks)
  • packages/thirdweb/src/react/web/ui/ConnectWallet/screens/Buy/swap/WalletRow.tsx (2 hunks)
  • packages/thirdweb/src/stories/Bridge/PaymentDetails.stories.tsx (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (4)
  • packages/thirdweb/src/react/web/ui/Bridge/common/TokenBalanceRow.tsx
  • packages/thirdweb/src/react/web/ui/ConnectWallet/screens/Buy/swap/WalletRow.tsx
  • packages/thirdweb/src/react/web/ui/Bridge/payment-details/PaymentOverview.tsx
  • packages/thirdweb/src/react/web/ui/Bridge/payment-details/PaymentDetails.tsx
🧰 Additional context used
📓 Path-based instructions (6)
**/*.{ts,tsx}

📄 CodeRabbit inference engine (CLAUDE.md)

**/*.{ts,tsx}: Write idiomatic TypeScript with explicit function declarations and return types
Limit each TypeScript file to one stateless, single-responsibility function for clarity
Re-use shared types from @/types or local types.ts barrels
Prefer type aliases over interface except for nominal shapes in TypeScript
Avoid any and unknown in TypeScript unless unavoidable; narrow generics when possible
Choose composition over inheritance; leverage utility types (Partial, Pick, etc.) in TypeScript

**/*.{ts,tsx}: Write idiomatic TypeScript with explicit function declarations and return types
Limit each file to one stateless, single-responsibility function for clarity and testability
Re-use shared types from @/types or local types.ts barrel exports
Prefer type aliases over interface except for nominal shapes
Avoid any and unknown unless unavoidable; narrow generics whenever possible
Choose composition over inheritance; leverage utility types (Partial, Pick, etc.)
Comment only ambiguous logic in TypeScript files; avoid restating TypeScript types and signatures in prose

Files:

  • packages/thirdweb/src/stories/Bridge/PaymentDetails.stories.tsx
  • packages/thirdweb/src/react/web/ui/ConnectWallet/screens/Buy/swap/StepConnector.tsx
  • packages/thirdweb/src/react/web/ui/ConnectWallet/icons/OutlineWalletIcon.tsx
packages/thirdweb/src/**/*.{ts,tsx}

📄 CodeRabbit inference engine (CLAUDE.md)

packages/thirdweb/src/**/*.{ts,tsx}: Comment only ambiguous logic in SDK code; avoid restating TypeScript in prose
Load heavy dependencies inside async paths to keep initial bundle lean (e.g. const { jsPDF } = await import("jspdf");)

Lazy-load heavy dependencies inside async paths to keep the initial bundle lean (e.g., const { jsPDF } = await import('jspdf');)

Files:

  • packages/thirdweb/src/stories/Bridge/PaymentDetails.stories.tsx
  • packages/thirdweb/src/react/web/ui/ConnectWallet/screens/Buy/swap/StepConnector.tsx
  • packages/thirdweb/src/react/web/ui/ConnectWallet/icons/OutlineWalletIcon.tsx
**/*.stories.tsx

📄 CodeRabbit inference engine (CLAUDE.md)

Add Storybook stories (*.stories.tsx) alongside new UI components for documentation

Files:

  • packages/thirdweb/src/stories/Bridge/PaymentDetails.stories.tsx
**/*.{js,jsx,ts,tsx,json}

📄 CodeRabbit inference engine (AGENTS.md)

Biome governs formatting and linting; its rules live in biome.json. Run pnpm fix & pnpm lint before committing, ensure there are no linting errors

Files:

  • packages/thirdweb/src/stories/Bridge/PaymentDetails.stories.tsx
  • packages/thirdweb/src/react/web/ui/ConnectWallet/screens/Buy/swap/StepConnector.tsx
  • packages/thirdweb/src/react/web/ui/ConnectWallet/icons/OutlineWalletIcon.tsx
**/*.{ts,tsx,js,jsx}

📄 CodeRabbit inference engine (AGENTS.md)

Lazy-import optional features; avoid top-level side-effects

Files:

  • packages/thirdweb/src/stories/Bridge/PaymentDetails.stories.tsx
  • packages/thirdweb/src/react/web/ui/ConnectWallet/screens/Buy/swap/StepConnector.tsx
  • packages/thirdweb/src/react/web/ui/ConnectWallet/icons/OutlineWalletIcon.tsx
**/*.stories.{ts,tsx}

📄 CodeRabbit inference engine (AGENTS.md)

For new UI components, add Storybook stories (*.stories.tsx) alongside the code

Files:

  • packages/thirdweb/src/stories/Bridge/PaymentDetails.stories.tsx
🧬 Code graph analysis (1)
packages/thirdweb/src/react/web/ui/ConnectWallet/screens/Buy/swap/StepConnector.tsx (2)
packages/thirdweb/src/react/web/ui/components/basic.tsx (1)
  • Container (80-193)
packages/thirdweb/src/react/core/design-system/index.ts (2)
  • radius (156-164)
  • iconSize (166-176)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (8)
  • GitHub Check: Size
  • GitHub Check: E2E Tests (pnpm, webpack)
  • GitHub Check: Unit Tests
  • GitHub Check: E2E Tests (pnpm, esbuild)
  • GitHub Check: Lint Packages
  • GitHub Check: E2E Tests (pnpm, vite)
  • GitHub Check: Build Packages
  • GitHub Check: Analyze (javascript)
🔇 Additional comments (5)
.changeset/yummy-squids-rush.md (1)

1-5: LGTM!

The changeset format is correct and appropriately documents this UI improvement patch.

packages/thirdweb/src/react/web/ui/ConnectWallet/screens/Buy/swap/StepConnector.tsx (2)

3-6: LGTM!

Good adoption of design-system tokens for consistency across the codebase.


16-17: LGTM!

The visual adjustments align with design-system tokens:

  • Margin adjustment from -10px to -12px
  • Color token change to secondaryText
  • radius.full (9999px) is semantically clearer than "100%"
  • Icon size increase from 16 to 20 with adjusted padding maintains visual balance

Also applies to: 25-25, 30-31, 34-34

packages/thirdweb/src/react/web/ui/ConnectWallet/icons/OutlineWalletIcon.tsx (1)

17-17: LGTM!

The style prop forwarding enables flexible styling from parent components.

packages/thirdweb/src/stories/Bridge/PaymentDetails.stories.tsx (1)

24-42: Deep-clone removal is safe; PaymentDetails component does not mutate paymentMethod prop.

Review of the PaymentDetails component and PaymentOverview subcomponent confirms they only read from the paymentMethod prop without any mutations or reassignments. Multiple stories safely reuse fixture objects (fiatPaymentMethod across 3 stories, ethCryptoPaymentMethod across 5 stories) since the component maintains immutability. Type structure verified: originToken includes prices: { USD: number } format as expected.

Comment on lines +4 to +8
export const OutlineWalletIcon = (props: {
size?: string;
color?: string;
style?: React.CSSProperties;
}) => {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🏁 Script executed:

# Read the OutlineWalletIcon.tsx file
cat -n "packages/thirdweb/src/react/web/ui/ConnectWallet/icons/OutlineWalletIcon.tsx"

Repository: thirdweb-dev/js

Length of output: 1800


🏁 Script executed:

# Check for React imports at the very top of the file
head -20 "packages/thirdweb/src/react/web/ui/ConnectWallet/icons/OutlineWalletIcon.tsx" | grep -n "import"

Repository: thirdweb-dev/js

Length of output: 41


🏁 Script executed:

# Check the entire file for any React import
rg "import.*React" "packages/thirdweb/src/react/web/ui/ConnectWallet/icons/OutlineWalletIcon.tsx"

Repository: thirdweb-dev/js

Length of output: 41


🏁 Script executed:

# View the entire file to check for any imports
wc -l "packages/thirdweb/src/react/web/ui/ConnectWallet/icons/OutlineWalletIcon.tsx"

Repository: thirdweb-dev/js

Length of output: 138


🏁 Script executed:

# View the full file from beginning to end
cat "packages/thirdweb/src/react/web/ui/ConnectWallet/icons/OutlineWalletIcon.tsx"

Repository: thirdweb-dev/js

Length of output: 1555


Add explicit return type and import React.

Per TypeScript guidelines, this function requires an explicit return type annotation and a React import. The code currently uses React.CSSProperties on line 7 without importing React, which will cause a type-checking error.

+import React from 'react';
+
 /**
  * @internal
  */
-export const OutlineWalletIcon = (props: {
+export const OutlineWalletIcon = (props: {
   size?: string;
   color?: string;
   style?: React.CSSProperties;
-}) => {
+}): JSX.Element => {
🤖 Prompt for AI Agents
packages/thirdweb/src/react/web/ui/ConnectWallet/icons/OutlineWalletIcon.tsx
lines 4-8: the component uses React types but doesn't import React and lacks an
explicit return type; add an import for React (e.g. import React from 'react')
at the top and annotate the component with an explicit return type (for example
use React.FC<Props> or : JSX.Element) so the props typing (React.CSSProperties)
and the component signature type-check correctly.

@graphite-app graphite-app bot merged commit 56a1c0a into main Dec 19, 2025
24 of 25 checks passed
@graphite-app graphite-app bot deleted the mny-341 branch December 19, 2025 13:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

packages SDK Involves changes to the thirdweb SDK

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants